package cn.tedu.sp03.service;


import cn.tedu.sp01.pojo.User;
import cn.tedu.sp01.service.UserService;
import cn.tedu.web.util.JsonUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;

import java.util.List;

// 刷新到的新的用户配置
// 重新注入业务对象，需要加 @RefreshScope
@RefreshScope
@Service
@Slf4j
public class UserServiceImpl implements UserService {
    // 配置中如果找不到这项配置，注入失败，项目无法启动
    @Value("${sp.user-service.users}")
    private String userJson;

    @Override
    public User getUser(Integer id) {
        log.info("获取用户，id="+id);
        // userJson ---> List<User> json字符串转成用户集合
        // import com.fasterxml.jackson.core.type.TypeReference;
        // TypeReference只是利用继承语法写要转换的类型：List<User>
        List<User> list = JsonUtil.from(
                userJson, new TypeReference<List<User>>() {});
        // 遍历查找用户
        for (User u : list) {
            if (u.getId().equals(id)) {
                return u;
            }
        }
        // 如果没找到，则返回写死的用户数据
        return new User(id, "用户名"+id, "密码"+id);
    }

    @Override
    public void addScore(Integer id, Integer score) {
        log.info("增加用户积分，id="+id+"， score="+score);
    }
}
